home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / TransferHandler$DropHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  5.8 KB  |  226 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Insets;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.awt.Toolkit;
  8. import java.awt.dnd.DropTargetDragEvent;
  9. import java.awt.dnd.DropTargetDropEvent;
  10. import java.awt.dnd.DropTargetEvent;
  11. import java.awt.dnd.DropTargetListener;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import java.io.Serializable;
  15. import javax.swing.TransferHandler.TransferSupport;
  16. import javax.swing.text.JTextComponent;
  17. import sun.swing.AccessibleMethod;
  18.  
  19. class TransferHandler$DropHandler implements DropTargetListener, Serializable, ActionListener {
  20.    private Timer timer;
  21.    private Point lastPosition;
  22.    private Rectangle outer;
  23.    private Rectangle inner;
  24.    private int hysteresis;
  25.    private Component component;
  26.    private Object state;
  27.    private TransferHandler.TransferSupport support;
  28.    private static final int AUTOSCROLL_INSET = 10;
  29.  
  30.    private TransferHandler$DropHandler() {
  31.       this.outer = new Rectangle();
  32.       this.inner = new Rectangle();
  33.       this.hysteresis = 10;
  34.       this.support = new TransferHandler.TransferSupport((Component)null, (DropTargetEvent)null, (TransferHandler.1)null);
  35.    }
  36.  
  37.    private void updateAutoscrollRegion(JComponent var1) {
  38.       Rectangle var2 = var1.getVisibleRect();
  39.       this.outer.setBounds(var2.x, var2.y, var2.width, var2.height);
  40.       Insets var3 = new Insets(0, 0, 0, 0);
  41.       if (var1 instanceof Scrollable) {
  42.          byte var4 = 20;
  43.          if (var2.width >= var4) {
  44.             var3.left = var3.right = 10;
  45.          }
  46.  
  47.          if (var2.height >= var4) {
  48.             var3.top = var3.bottom = 10;
  49.          }
  50.       }
  51.  
  52.       this.inner.setBounds(var2.x + var3.left, var2.y + var3.top, var2.width - (var3.left + var3.right), var2.height - (var3.top + var3.bottom));
  53.    }
  54.  
  55.    private void autoscroll(JComponent var1, Point var2) {
  56.       if (var1 instanceof Scrollable) {
  57.          Scrollable var3 = (Scrollable)var1;
  58.          if (var2.y < this.inner.y) {
  59.             int var4 = var3.getScrollableUnitIncrement(this.outer, 1, -1);
  60.             Rectangle var5 = new Rectangle(this.inner.x, this.outer.y - var4, this.inner.width, var4);
  61.             var1.scrollRectToVisible(var5);
  62.          } else if (var2.y > this.inner.y + this.inner.height) {
  63.             int var6 = var3.getScrollableUnitIncrement(this.outer, 1, 1);
  64.             Rectangle var9 = new Rectangle(this.inner.x, this.outer.y + this.outer.height, this.inner.width, var6);
  65.             var1.scrollRectToVisible(var9);
  66.          }
  67.  
  68.          if (var2.x < this.inner.x) {
  69.             int var7 = var3.getScrollableUnitIncrement(this.outer, 0, -1);
  70.             Rectangle var10 = new Rectangle(this.outer.x - var7, this.inner.y, var7, this.inner.height);
  71.             var1.scrollRectToVisible(var10);
  72.          } else if (var2.x > this.inner.x + this.inner.width) {
  73.             int var8 = var3.getScrollableUnitIncrement(this.outer, 0, 1);
  74.             Rectangle var11 = new Rectangle(this.outer.x + this.outer.width, this.inner.y, var8, this.inner.height);
  75.             var1.scrollRectToVisible(var11);
  76.          }
  77.       }
  78.  
  79.    }
  80.  
  81.    private void initPropertiesIfNecessary() {
  82.       if (this.timer == null) {
  83.          Toolkit var1 = Toolkit.getDefaultToolkit();
  84.          Integer var2 = (Integer)var1.getDesktopProperty("DnD.Autoscroll.interval");
  85.          this.timer = new Timer(var2 == null ? 100 : var2, this);
  86.          var2 = (Integer)var1.getDesktopProperty("DnD.Autoscroll.initialDelay");
  87.          this.timer.setInitialDelay(var2 == null ? 100 : var2);
  88.          var2 = (Integer)var1.getDesktopProperty("DnD.Autoscroll.cursorHysteresis");
  89.          if (var2 != null) {
  90.             this.hysteresis = var2;
  91.          }
  92.       }
  93.  
  94.    }
  95.  
  96.    public void actionPerformed(ActionEvent var1) {
  97.       this.updateAutoscrollRegion((JComponent)this.component);
  98.       if (this.outer.contains(this.lastPosition) && !this.inner.contains(this.lastPosition)) {
  99.          this.autoscroll((JComponent)this.component, this.lastPosition);
  100.       }
  101.  
  102.    }
  103.  
  104.    private void setComponentDropLocation(TransferHandler.TransferSupport var1, boolean var2) {
  105.       TransferHandler.DropLocation var3 = var1 == null ? null : var1.getDropLocation();
  106.       if (this.component instanceof JTextComponent) {
  107.          try {
  108.             AccessibleMethod var4 = new AccessibleMethod(JTextComponent.class, "setDropLocation", new Class[]{TransferHandler.DropLocation.class, Object.class, Boolean.TYPE});
  109.             this.state = var4.invokeNoChecked(this.component, new Object[]{var3, this.state, var2});
  110.          } catch (NoSuchMethodException var5) {
  111.             throw new AssertionError("Couldn't locate method JTextComponet.setDropLocation");
  112.          }
  113.       } else if (this.component instanceof JComponent) {
  114.          this.state = ((JComponent)this.component).setDropLocation(var3, this.state, var2);
  115.       }
  116.  
  117.    }
  118.  
  119.    private void handleDrag(DropTargetDragEvent var1) {
  120.       TransferHandler var2 = ((TransferHandler.HasGetTransferHandler)this.component).getTransferHandler();
  121.       if (var2 == null) {
  122.          var1.rejectDrag();
  123.          this.setComponentDropLocation((TransferHandler.TransferSupport)null, false);
  124.       } else {
  125.          TransferSupport.access$400(this.support, this.component, var1);
  126.          boolean var3 = var2.canImport(this.support);
  127.          if (var3) {
  128.             var1.acceptDrag(this.support.getDropAction());
  129.          } else {
  130.             var1.rejectDrag();
  131.          }
  132.  
  133.          boolean var4 = TransferSupport.access$500(this.support) ? TransferSupport.access$600(this.support) : var3;
  134.          this.setComponentDropLocation(var4 ? this.support : null, false);
  135.       }
  136.    }
  137.  
  138.    public void dragEnter(DropTargetDragEvent var1) {
  139.       this.state = null;
  140.       this.component = var1.getDropTargetContext().getComponent();
  141.       this.handleDrag(var1);
  142.       if (this.component instanceof JComponent) {
  143.          this.lastPosition = var1.getLocation();
  144.          this.updateAutoscrollRegion((JComponent)this.component);
  145.          this.initPropertiesIfNecessary();
  146.       }
  147.  
  148.    }
  149.  
  150.    public void dragOver(DropTargetDragEvent var1) {
  151.       this.handleDrag(var1);
  152.       if (this.component instanceof JComponent) {
  153.          Point var2 = var1.getLocation();
  154.          if (Math.abs(var2.x - this.lastPosition.x) <= this.hysteresis && Math.abs(var2.y - this.lastPosition.y) <= this.hysteresis) {
  155.             if (!this.timer.isRunning()) {
  156.                this.timer.start();
  157.             }
  158.          } else if (this.timer.isRunning()) {
  159.             this.timer.stop();
  160.          }
  161.  
  162.          this.lastPosition = var2;
  163.       }
  164.    }
  165.  
  166.    public void dragExit(DropTargetEvent var1) {
  167.       this.cleanup(false);
  168.    }
  169.  
  170.    public void drop(DropTargetDropEvent var1) {
  171.       TransferHandler var2 = ((TransferHandler.HasGetTransferHandler)this.component).getTransferHandler();
  172.       if (var2 == null) {
  173.          var1.rejectDrop();
  174.          this.cleanup(false);
  175.       } else {
  176.          TransferSupport.access$400(this.support, this.component, var1);
  177.          boolean var3 = var2.canImport(this.support);
  178.          if (var3) {
  179.             var1.acceptDrop(this.support.getDropAction());
  180.             boolean var4 = TransferSupport.access$500(this.support) ? TransferSupport.access$600(this.support) : var3;
  181.             this.setComponentDropLocation(var4 ? this.support : null, false);
  182.  
  183.             boolean var5;
  184.             try {
  185.                var5 = var2.importData(this.support);
  186.             } catch (RuntimeException var7) {
  187.                var5 = false;
  188.             }
  189.  
  190.             var1.dropComplete(var5);
  191.             this.cleanup(var5);
  192.          } else {
  193.             var1.rejectDrop();
  194.             this.cleanup(false);
  195.          }
  196.  
  197.       }
  198.    }
  199.  
  200.    public void dropActionChanged(DropTargetDragEvent var1) {
  201.       if (this.component != null) {
  202.          this.handleDrag(var1);
  203.       }
  204.    }
  205.  
  206.    private void cleanup(boolean var1) {
  207.       this.setComponentDropLocation((TransferHandler.TransferSupport)null, var1);
  208.       if (this.component instanceof JComponent) {
  209.          ((JComponent)this.component).dndDone();
  210.       }
  211.  
  212.       if (this.timer != null) {
  213.          this.timer.stop();
  214.       }
  215.  
  216.       this.state = null;
  217.       this.component = null;
  218.       this.lastPosition = null;
  219.    }
  220.  
  221.    // $FF: synthetic method
  222.    TransferHandler$DropHandler(TransferHandler.1 var1) {
  223.       this();
  224.    }
  225. }
  226.